-
Notifications
You must be signed in to change notification settings - Fork 4k
amqp_client: Emit 'connection.blocked' in direct connections #14660
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Just in case it helps, the following shows how to easily trigger memory and/or disk alarms in a test case: rabbitmq-server/deps/rabbit/test/amqp_client_SUITE.erl Lines 3200 to 3234 in 2303570
|
This change also refactors them to use two unclustered nodes. This is a prerequisite for the child change which will remove the workaround of using a direct connection to be able to publish while a node is in alarm.
Previously direct 0-9-1 connections did not notice when memory or disk alarms were set. This could allow an 0-9-1 shovel where the destination is a direct connection to completely overload a broker which is already in alarm. With this change, direct connections register the connection process with `rabbit_alarm` and emit `connection.blocked` and `connection.unblocked` to the blocked handler if one is registered. `rabbit_amqp091_shovel` already respects the `connection.blocked`, so the destination will not receive any messages.
c75597c
to
9393ec9
Compare
Thanks for the pointers @ansd & @gomoripeti! I moved the existing tests for alarms and 0-9-1 shovels to a new suite and added a group there that uses a direct connection |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ugh, this is a tough behavior to test :(
amqp_client: Emit 'connection.blocked' in direct connections (backport #14660)
Fixes #14657
Previously direct 0-9-1 connections did not notice when memory or disk alarms were set. This could allow an 0-9-1 shovel where the destination is a direct connection to completely overload a broker which is already in alarm. With this change, direct connections register the connection process with
rabbit_alarm
and emitconnection.blocked
andconnection.unblocked
to the blocked handler if one is registered.rabbit_amqp091_shovel
already respects theconnection.blocked
, so the destination will not receive any messages.